package com.lfm.jdbc.datasource;

import com.lfm.jdbc.utils.JDBCUtilsByDruid;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.junit.jupiter.api.Test;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class DBUtils_USE {
    //使用apache-DBUtils 工具类 + druid 完成对表的crud操作
    @Test
    public void testQueryMany() throws Exception {//返回结果是多行的情况
        //1. 得到连接
        Connection connection = JDBCUtilsByDruid.getConnection();
        //2. 使用DBUtils 和 接口,先引入DBUtils 相关的jar文件, 加入到Project
        //3. 创建QueryRunner
        QueryRunner queryRunner = new QueryRunner();

        //4.  可以执行相关方法，返回ArrayList 结果集

        //(1) query 方法就是执行sql语句 得到resultset 封装到 ArrayList集合中
        //(2) 返回集合
        //(3) connection: 连接
        //(4) sql : 执行sql语句
        //(5) new BeanListHandler<>(Actor.class):在将resultset -> Actor对象  ->封装到ArrayList
        //底层使用反射机制去获取Actor类的属性，然后进行封装
        //(6) 1就是给sql语句中的? 赋值， 可变参数
        //(7) preparement 和 结果集(ResultSet)会在底层关闭
        String sql = "select * from actor where id >= ?";
        List<Actor> list =
                queryRunner.query(connection,sql ,new BeanListHandler<>(Actor.class), 1);

        for (Actor actor : list) {
            System.out.println(actor);
        }

        //释放资源
        JDBCUtilsByDruid.close(null, null, connection);


    }
}
